In a Prefetch method, it is determined in advance that a set of data blocks is about to be used, and then the entire set of data is read into a buffer or cache with a single asynchronous I/O operation. Currently, there are three main prefetch methods in many computing systems. The first prefetch method is dynamic prefetch. In the dynamic fetch, a computer system expects that data on pages to be accessed is sufficiently non-sequential to invoke dynamic prefetch. Dynamic prefetch uses sequential detection in runtime. The second prefetch method is sequential prefetch. In the sequential prefetch, data pages that are read in advance are sequential. A table space scan always uses sequential prefetch; however, an index scan may not use it. The third prefetch method is list prefetch. In the list prefetch, one or more indexes are used to select the PAGESs for a list of data pages to be read in advance; the pages need not be sequential. Usually, the PAGESs are sorted.
Sequential prefetch is used a lot during table scan for a database data management engine. Dynamic prefetch requests the fetching data pages is nearly in sequence. List prefetch sorts PAGES in advance, which can be applied for data with B+tree index built on it.
When the scale and the dimension of data are large or when the data pages or blocks are not in order, there is no effective prefetch method for common cases. Usually, some computing systems may use dynamic prefetch or no prefetch. For some of the situations, all the current prefetch approaches do not perform well from application's I/O performance perspective.